package com.order.service;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;

import com.order.domain.User;
import com.order.domain.Customer;
import com.order.domain.PageBean;

/**
 * 学生的业务层接口
 * 
 * @author zhy
 *
 */
public interface ICustomerService {

	/**
	 * 查询学生列表
	 * 
	 * @param dCriteria
	 * @param pageSize 
	 * @param pageNumber 
	 * @return
	 */
	List<Customer> findAllCustomer(DetachedCriteria dCriteria);
	PageBean<Customer> findAllCustomer(DetachedCriteria dCriteria, int pageNumber, int pageSize);


	/**
	 * 保存学生
	 * 
	 * @param customer
	 */
	void saveCustomer(Customer customer);


	/**
	 * 根据id删除学生
	 * 
	 * @param studentId
	 */
	void removeCustomer(Integer studentId);

	/**
	 * 根据id查询学生信息
	 * 
	 * @param studentId
	 * @return
	 */
	Customer findCustomerById(Integer studentId);
	
	void updateCustomer(Customer customer);

	List<User> findAllAffiliatedTeacher(DetachedCriteria uCriteria);


	/**
	 * 拉出公海
	 * @param studentId
	 * @param id
	 */
	void pullCustomer(Integer studentId);

	/**
	 * 拉入公海
	 * @param studentId
	 */
	void putCustomer(Integer studentId);

	/**
	 * 批量删除
	 * @param checkTnum
	 */
	void deleteAll(int checkTnum);
	
	/**
	 * 查询每个员工未联系学生人数
	 * @param ddCriteria
	 * @return
	 */
	int findContactNum(DetachedCriteria ddCriteria);
	
	/**
	 * 删除员工时，所属学生全部归为“公海”
	 * @param id
	 */
	void updateAffiliatedTeache(Integer studentId);

}
